The present disclosure relates to storage system in general, and to automatic determination of amount of read-ahead by the storage system in particular.
Storage system enable user to retrieve data stored in storage devices, such as a hard disk drive, a removable storage device, Redundant Array of Inexpensive Disks (RAID), Random Access Memory (RAM), Flash memory, removable media or the like. Data is stored in a the storage device in data blocks, which may be read or written based on requests, commands, rules or the like. Upon a retrieval request, the storage system may access the storage device and retrieve pertinent data blocks. The time that takes a retrieval request to be completed is comprised by the factors: latency time and read time. The latency time is generally not dependent of the number of data blocks being read, whereas the read time is generally linear in the number of data block being read.
Some storage systems attempt to reduce a cumulative time of performing retrieval requests by reading additional data blocks, not yet requested, and caching the additional data blocks. This procedure is referred to as read-ahead. In case the additional data blocks are requested, a latency time may be spared. However, in case the additional data blocks are never requested, or requested after being removed from a cache memory, surplus read time was added. Therefore, performing unnecessary read-ahead may significantly increase the performance time of the storage system, in contrast to the purpose of the read-ahead procedure.